package com.pktechan.manage.service;

import com.pktechan.manage.base.BaseService;
import com.pktechan.manage.entity.SysOperate;
import com.pktechan.manage.entity.SysRole;
import com.pktechan.manage.entity.SysUser;
import com.pktechan.manage.vo.RoleOperateListVO;
import com.pktechan.manage.vo.SysUserVO;

import java.util.List;
import java.util.Map;


public interface SysRoleService extends BaseService<SysRole> {
    /**
     * 删除指定角色基本信息及关联关系。
     * @param id
     */
    void deleteSystemRole(Integer id);

    /**
     * 添加角色信息列表。
     * @param roleOperateListEntity
     * @return
     */
    SysRole addAndBindingOperate(RoleOperateListVO roleOperateListEntity);

    /**
     * 查询全部角色权限
     * @return
     */
    List<SysOperate> queryOperateListByRoleId();

    /**
     * 查看角色相关员工列表。
     * @param sysRole
     * @return
     */
    List<SysUser> getOaStaffsByRoleId(SysRole sysRole);

    /**
     * 更新角色信息列表。
     * @param roleOperateListEntity
     */
    void updateSystemRole(RoleOperateListVO roleOperateListEntity);

    /**
     * 根据指定唯一标识获取角色信息
     * @param roleId
     * @return
     */
    RoleOperateListVO getRoleOperatesById(Integer roleId);

    /**
     * 根据角色id 查询具体权限信息
     * @param roleOperateListVO
     * @return
     */
    Map queryListByTypeAndRoleId(RoleOperateListVO roleOperateListVO);

    /**
     * 解除用户下的所有角色绑定。
     * @param userId
     */
    void deleteAllRoleByUser(Integer userId) throws Exception;

    /**
     *
     * @param user
     */
    void updateUserRole(SysUserVO user) throws Exception;
}
